# -*- coding: utf-8 -*-
# 作者：秋禊

import cv2
import os

def main01():
    cap = cv2.VideoCapture(0)# 调用笔记本内置摄像头，所以参数为0，如果有其他的摄像头可以调整参数为1，2
    face_detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    face_id = input('\n 输入用户ID(必须为整数):')
    print('\n 请面向摄像头,正在采集面部信息，请稍后...')
    cai_ji(cap, face_detector, face_id)

def cai_ji(cap, face_detector, face_id):
    count = 0
    while True:
        sucess, img = cap.read()    # 从摄像头读取图片
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 转为灰度图片
        faces = face_detector.detectMultiScale(gray, 1.3, 5) # 检测人脸
        for (x, y, w, h) in faces:
            cv2.rectangle(img, (x,y), (x+w,y+w), (255, 0, 0)) # brief绘制一个矩形
            count += 1
            cv2.imwrite("Facedata/User." + str(face_id) + '.' +
                        str(count) + '.pgm', gray[y: y + h, x: x + w])# 保存图像
            cv2.imshow('Face data collection', img)# 初始化一个窗口
        k = cv2.waitKey(1)# 保持画面的持续。
        if k == 27:   # 通过esc键退出摄像
            break
        elif count >= 500:  # 得到500个样本后退出摄像
            break

if __name__ == '__main__':
    main()